package com.neuedu.corejava.ch5;
/**
 * 基本数据类型与引用数据类型在方法调用时的差别
 * @author admin
 *
 */
public class ReferenceParameter {

	public void  change(int a){ //参数是基本数据类型
		a=12;
		System.out.println("in method"+a);
	}
	public void  change(String a){ //参数是一个对象类型，引用数据类型
		a="in method";
		System.out.println(a);
	}
	public void  change(int[] a){//数组是引用数据类型
		a[0] = 12; //没有对数组重新赋值，修改数组内部数据会影响数组数据
		for (int i : a) {
			System.out.print(i+"\t");
		}
		System.out.println();
	}
	public void  change2(int[] a){
		a = new int[]{1,2,3,4,5}; //修改数组的引用，重新对数组进行赋值，不影响方法外部
		for (int i : a) {
			System.out.print(i+"\t");
		}
		System.out.println();
	}
	public static void main(String[] args) {
		ReferenceParameter rp = new ReferenceParameter();
		int a=10;
		rp.change(a);//传值调用，内部修改不影响外部
		System.out.println(a);
		
		String string = "hello";
		rp.change(string); //传引用调用
		System.out.println(string);
		
		int[] array = new int[]{1,23,4,5,6,7};
		rp.change(array);
		for (int i : array) {
			System.out.print(i+"\t");
		}
		
		rp.change2(array);//传引用调用，传递的参数是一个引用数据类型，在方法内部修改引用，不影响方法外部
		for (int i : array) {
			System.out.print(i+"\t");
		}
	}

}
